/**
 * @PROJECT_NAME: design_patterns
 * @DESCRIPTION: 桥接模式：Bridge pattern
 * 定义：将抽象与实现分离，使它们可以独立变化，它是用组合关系代替继承关系来实现，从而降低了抽象和实现这两个可变维度的耦合度。
 * <p>
 * 案例说明：视频播放器
 * <p>
 * 需要一个跨平台的视频播放器，可以在不同操作系统平台（如Windows、Mac、Linux等）上播放多种格式的视频文件，
 * 常见的视频格式包括RMVB、AVI、WMV等。
 * <p>
 * 桥接模式应用场景：有多个不同维度的扩展需求，适合使用桥接模式，如上面案例，操作系统平台是一个维度，播放不同格式的视频文件时一个维度。
 * <p>
 * 结构：
 * <p>
 * 抽象化角色(Abstraction)：定义抽线类，并包含一个对现实化对象的引用。（OperationSystem）
 * <p>
 * 扩展抽象化角色(Refined Abstraction)：是抽象化角色的子类，实现父类中的业务方法，并通过组合关系调用实现化角色中的业务方法。(Windows)
 * <p>
 * 实现化角色(Implementor)：定义实现化角色的接口，供扩展抽象化角色调用。(VideoFile)
 * <p>
 * 具体实现化角色(Concrete Implementor)：给出实现化角色的具体实现。(AVIFile)
 * <p>
 * 使用场景：
 * <p>
 * 当一个类存在两个独立变化的维度，且这两个维度都需要进行扩展时。
 * <p>
 * 当一个系统不希望使用集成或者因为多层次集成导致系统类的个数急剧增加时。
 * <p>
 * 当一个系统需要再构件的抽象化角色和具体化角色之间增加更多的灵活性时，避免在两个层次之间建立静态的继承联系，
 * 通过桥接模式可以使它们在抽象层建立一个关联关系。
 * @AUTHOR: CNBruceLee
 * @DATE: 2021/7/26 22:55
 */
package com.bruce.demo2.patterns.demo2.structural.demo09.bridge;
